/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import { request as __request, checkJsonSchema as __checkJsonSchema } from '../../core/request';
const schemas = require("../schema").default;

export class DemandManagementService {

    /**
     * 用户通过前端添加需求
     * @returns any OK
     * @throws ApiError
     */
    public static async addDemand({
        productVId,
        requestBody,
    }: {
        productVId: string,
        requestBody?: {
            /**
             * 产品版本ID
             */
            productVId: string,
            /**
             * 需求名称
             */
            name: string,
            /**
             * 需求重要程度，取值
             * 0:重要；1：较重要；2:普通
             */
            level: number,
            /**
             * 需求id，用于打通禅道等项目管理工具
             */
            openId?: string,
            /**
             * 需求描述
             */
            desc?: string,
        },
    }): Promise<{
        /**
         * 值为0，操作成功
         */
        optResult: number,
        /**
         * 操作失败说明
         */
        msg?: string,
        /**
         * 需求入库成功编号
         */
        id: string,
    }> {
        const result = await __request({
            method: 'POST',
            path: `/demand-admin/v1/${productVId}/demand`,
            body: requestBody,
        });

        __checkJsonSchema("addDemand", schemas, result);
        return result.body;
    }

    /**
     * 用户通过前端列举需求
     * @returns any OK
     * @throws ApiError
     */
    public static async listDemand({
        productVId,
        requestBody,
    }: {
        productVId: string,
        requestBody?: {
            /**
             * 产品版本ID
             */
            productVId: string,
            /**
             * 分页查询的页数
             * 1）不传该参数，查询内容不分页
             * 2）传大于等于1的整数时，分页查询
             */
            pageNum?: number,
            /**
             * 分页查询的每页数据条数，取值范围 1-100。默认提取20条
             */
            pageDataCount?: number,
        },
    }): Promise<{
        /**
         * 值为0，操作成功
         */
        optResult: number,
        /**
         * 操作失败说明
         */
        msg?: string,
        /**
         * 需求内容列表
         */
        demands: Array<{
            /**
             * 需求名称
             */
            name: string,
            /**
             * 需求重要程度，取值
             * 0:重要；1：较重要；2:普通
             */
            level: number,
            /**
             * 需求id，用于打通禅道等项目管理工具
             */
            openId?: string,
            /**
             * 需求描述
             */
            desc?: string,
            /**
             * 需求序号
             */
            id: number,
        }>,
    }> {
        const result = await __request({
            method: 'GET',
            path: `/demand-admin/v1/${productVId}/demand`,
            body: requestBody,
        });

        __checkJsonSchema("listDemand", schemas, result);
        return result.body;
    }

    /**
     * 用户通过前端修改需求内容
     * @returns any Example response
     * @throws ApiError
     */
    public static async modDemand({
        productVId,
        id,
        requestBody,
    }: {
        productVId: string,
        id: string,
        requestBody?: {
            /**
             * 产品版本ID
             */
            productVId: string,
            /**
             * 需求名称
             */
            name: string,
            /**
             * 需求重要程度，取值0:重要；1：较重要；2:普通
             */
            level: number,
            /**
             * 需求id，用于打通禅道等项目管理工具
             */
            openId?: string,
            /**
             * 需求描述
             */
            desc?: string,
        },
    }): Promise<{
        /**
         * 值为0，操作成功
         */
        optResult: number,
        /**
         * 操作失败说明
         */
        msg?: string,
    }> {
        const result = await __request({
            method: 'PUT',
            path: `/demand-admin/v1/${productVId}/demand/${id}`,
            body: requestBody,
        });

        __checkJsonSchema("modDemand", schemas, result);
        return result.body;
    }

    /**
     * 用户通过前端查询某个需求的具体内容
     * @returns any OK
     * @throws ApiError
     */
    public static async getDemandContent({
        productVId,
        id,
        requestBody,
    }: {
        productVId: string,
        id: string,
        requestBody?: {
            /**
             * 产品版本ID
             */
            productVId: string,
            /**
             * 需求ID
             */
            id: number,
        },
    }): Promise<{
        /**
         * 值为0，操作成功
         */
        optResult: number,
        /**
         * 操作失败说明
         */
        msg?: string,
        /**
         * 需求内容
         */
        demand: {
            /**
             * 需求名称
             */
            name: string,
            /**
             * 需求重要程度，取值
             * 0:重要；1：较重要；2:普通
             */
            level: number,
            /**
             * 需求id，用于打通禅道等项目管理工具
             */
            openId?: string,
            /**
             * 需求描述
             */
            desc?: string,
            /**
             * 需求序号
             */
            id: number,
        },
    }> {
        const result = await __request({
            method: 'GET',
            path: `/demand-admin/v1/${productVId}/demand/${id}`,
            body: requestBody,
        });

        __checkJsonSchema("getDemandContent", schemas, result);
        return result.body;
    }

    /**
     * 用户通过前端删除某个需求
     * @returns any Example response
     * @throws ApiError
     */
    public static async deleteDemand({
        productVId,
        id,
        requestBody,
    }: {
        productVId: string,
        id: string,
        requestBody?: {
            /**
             * 产品版本ID
             */
            productVId: string,
            /**
             * 需求ID
             */
            id: string,
        },
    }): Promise<{
        /**
         * 值为0，操作成功
         */
        optResult: number,
        /**
         * 操作失败说明
         */
        msg?: string,
    }> {
        const result = await __request({
            method: 'DELETE',
            path: `/demand-admin/v1/${productVId}/demand/${id}`,
            body: requestBody,
        });

        __checkJsonSchema("deleteDemand", schemas, result);
        return result.body;
    }

    /**
     * 用户通过前端删除某个需求及其关联的用例
     * @returns any Example response
     * @throws ApiError
     */
    public static async deleteDemandCase({
        productVId,
        id,
        isHardDel,
        requestBody,
    }: {
        productVId: string,
        id: string,
        isHardDel: string,
        requestBody?: {
            /**
             * 产品版本ID
             */
            productVId: string,
            /**
             * 需求ID
             */
            id: string,
            /**
             * 是否硬删除即删除其下的所有子结点，可取值：1-是，0-否
             */
            isHardDel: number,
        },
    }): Promise<{
        /**
         * 值为0，操作成功
         */
        optResult: number,
        /**
         * 操作失败说明
         */
        msg?: string,
    }> {
        const result = await __request({
            method: 'DELETE',
            path: `/demand-admin/v1/${productVId}/demand/${id}/case/${isHardDel}`,
            body: requestBody,
        });

        __checkJsonSchema("deleteDemandCase", schemas, result);
        return result.body;
    }

}